package probandoTitiritero;

import java.util.ArrayList;
import java.util.Iterator;

import juego.Caza;
import juego.CazaAdaptable;
import juego.FormacionCazas;
import juego.FormacionCazasAdaptables;
import juego.Movil;
import juego.Tripulado;
import vista.VistaCaza;
import vista.VistaCazaAdaptable;
import vista.VistaFondo1;
import vista.VistaTripulado;
import ar.uba.fi.algo3.titiritero.ControladorJuego;

public class Programa3 {

	public static void main(String[] args) {

    	/*
         * Primero instancio mi modelo: un Tripulado en un fondo
         */
              
        Fondo unFondo = new Fondo(200,200);
        Tripulado algo42 = new Tripulado();

            /*
             * Luego instancio los objetos del framework: una ventana y el controlador
             */             
            ControladorJuego controlador = new ControladorJuego(false);
            
            VentanaPrincipal ventana = new VentanaPrincipal(controlador);
            controlador.setSuperficieDeDibujo(ventana.getSuperficieDeDibujo());

            ventana.setVisible(true);
            controlador.agregarKeyPressObservador(new EscuchadorDeKeyPress(algo42));
           
            VistaFondo1 vistaFondo = new VistaFondo1();
            vistaFondo.setPosicionable(unFondo);
            
            VistaTripulado vistaTripulado = new VistaTripulado();
            vistaTripulado.setPosicionable(algo42);
            
            FormacionCazas flota = new FormacionCazas(250,100);
            FormacionCazasAdaptables flota2 = new FormacionCazasAdaptables(50,50);
           
            ArrayList<Movil> flotaDeCazas = flota.getLista();
            controlador.agregarDibujable(vistaFondo);
            Iterator<Movil> i = flotaDeCazas.iterator();
            while (i.hasNext()){
            	
               VistaCaza vistaCaza = new VistaCaza();
               Caza caza = (Caza) i.next();
               vistaCaza.setPosicionable(caza);
               
               controlador.agregarObjetoVivo(caza);
               
               controlador.agregarDibujable(vistaCaza);
            }
            
            ArrayList<Movil> flotaDeCazasAdaptables = flota2.getLista();
            Iterator<Movil> iterador = flotaDeCazasAdaptables.iterator();
            while (iterador.hasNext()){
            	
               VistaCazaAdaptable vistaCazaAdaptable = new VistaCazaAdaptable();
               CazaAdaptable caza = (CazaAdaptable) iterador.next();
               vistaCazaAdaptable.setPosicionable(caza);
               
               controlador.agregarObjetoVivo(caza);
               
               controlador.agregarDibujable(vistaCazaAdaptable);
            }
            
            controlador.agregarObjetoVivo(algo42);
            controlador.agregarDibujable(vistaTripulado);
            controlador.agregarMouseClickObservador(vistaFondo);
            
       
            controlador.setIntervaloSimulacion(100);
            controlador.comenzarJuego();

    }

}
